Importar archivos dbf

30/06/2005 - 03:09 por Luis Verme | Informe spam
Al abrir un archivo dbf en Excel, automáticamente se genera un rango que
incluye todos los datos, llamado "Base de Datos". El problema ocurre que
cuando quiero seleccionar ese nombre aparece un error ya que todos los
nombres no deben tener espacios en blanco. Esto es un error del Excel ya que
debería generar automáticamente un nombre "Base_de_Datos" para que trabaje
correctamente. En la versión en inglés no hay problema ya que genera el
nombre "Database". Creo que un pequeño parche de Microsoft corregiría el
problema.

Saludos

Luis Verme

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
30/06/2005 - 09:38 | Informe spam
hola, Luis !

Mostrar la cita
[hasta donde se, y segun parece... 'efectivamente']... se trata de un 'error' en excel que...
-> sucede SOLO con las versiones 'NO-USA/ingles'... Y con la propiedad 'NameLocal'
[ya que 'el mismo' nombre tiene una propiedad 'Name' que 'devuelve'... 'Database']
-> 'se mantiene'... por 'cuestiones de compatibilidad' -???- [con dBase o...]
[con aplicaciones como 'lotus-123' que SI permitian la generacion y uso de nombres 'con espacios']
-> desde la interfase de usuario... es posible eliminar/modificar/... dicho nombre 'auto-generado' [localmente]
ya que por codigo NO se puede eliminar/modificar/... el nombre [NI Name NI NameLocal]... SOLO 'ocultarlo' :-(
[lo que se podria 'aprovechar' si por codigo quisieras 'crear' uno 'compatible' y ocultar el 'ofensivo'] ;)
-> te expongo un ejemplo al final <- :)) [o... trabajarlo desde la interfase del usuario] :-(
-> otra [posible] alternativa es utilizar/crear/... una consulta de datos externos y abrir el archivo .dbf [p.e.]
[menu] datos / obtener datos externos... / crear nueva consulta... -> y abrir el 'susodicho' archivo
lo que dejaria una consulta externa 'refrescable' y con un nombre 'auto-generado' del tipo: 'DatosExternos1'
-> por lo anterior... no se si este 'planeada' una correccion o parche para solucionar esta [quizas molesta} situacion :-(

comentas?
saludos,
hector.
en un modulo de codigo 'normal' y con el archivo .dbf recien abierto ==Sub Corrige_Nombre_de_Archivos_dBase()
Dim Nombre As String, Formula As String
With Names(1)
Nombre = Application.Substitute(.NameLocal, " ", "_")
Formula = .RefersTo: On Error Resume Next: .Delete
End With
If Names(1).Visible Then Names(1).Visible = False
With Names.Add( _
Name:=Nombre, _
RefersTo:=Formula)
End With
End Sub
#2 Luis Verme
30/06/2005 - 19:00 | Informe spam
Muchas gracias por tu email Héctor Miguel. Podrías explicarme como es que
funciona tu rutina. Yo tengo conocimientos básicos de VBA.
He copiado tu rutina en el archivo dbf y no funciona.

Saludos

Luis Verme

"Héctor Miguel" escribió en el mensaje
news:#
Mostrar la cita
Datos"
Mostrar la cita
espacios en blanco
Mostrar la cita
nombre "Base_de_Datos"
Mostrar la cita
'error' en excel que...
Mostrar la cita
'NameLocal'
Mostrar la cita
'Database']
Mostrar la cita
o...]
Mostrar la cita
uso de nombres 'con espacios']
Mostrar la cita
dicho nombre 'auto-generado' [localmente]
Mostrar la cita
Name NI NameLocal]... SOLO 'ocultarlo' :-(
Mostrar la cita
'compatible' y ocultar el 'ofensivo'] ;)
Mostrar la cita
interfase del usuario] :-(
Mostrar la cita
externos y abrir el archivo .dbf [p.e.]
Mostrar la cita
y abrir el 'susodicho' archivo
Mostrar la cita
'auto-generado' del tipo: 'DatosExternos1'
Mostrar la cita
para solucionar esta [quizas molesta} situacion :-(
Mostrar la cita
==> Sub Corrige_Nombre_de_Archivos_dBase()
Mostrar la cita
#3 Héctor Miguel
30/06/2005 - 23:14 | Informe spam
hola, Luis !

Mostrar la cita
el funcionamiento esta basado en la suposicion de que al abrir un archivo .dbf se genera un solo nombre [con espacios]
y el procedimiento es cambiar los espacios por un guion_bajo para 'generar' un [nuevo] nombre que sea 'compatible'
[ademas estoy 'aprovechando' que] existe una forma de 'simular' que es el usuario el que actua en la interfase grafica
[lo anterior para 'lograr' que sea por codigo la 'eliminacion' del nombre auto-generado que resulta 'ofensivo'/inutilizable] ;)

sigue los siguientes pasos y... si cualquier duda... comentas?
saludos,
hector.
=1) inicia excel o... aprovecha un libro 'en blanco' o... cualquiera que tengas abierto y...
2) inicia el editor de vba [menu] herramientas / macro / editor de vb ... {Alt}+{F11}
3) inserta un modulo de codigo 'normal' [menu] insertar / modulo...
4) copia/pega en ese modulo creado las siguientes lineas...
Sub Corrige_Nombre_de_Archivos_dBase()
Dim Nombre As String, Formula As String
Nombre = Application.Substitute(Names(1).NameLocal, " ", "_")
Formula = Names(1).RefersTo
SendKeys "{tab} +{tab}+{tab} {esc}"
Application.Dialogs(xlDialogDefineName).Show
Names.Add Name:=Nombre, RefersTo:=Formula
End Sub
4) [opcional] cierra el editor de vba {Alt}+Q y/o... 'regresa' a excel
5) abre de manera 'normal' el archivo .dbf
6) una vez abierto... ejecuta la macro anterior..
-> [menu] herramientas / macro / macros... o... {Alt}+{F8}
-> selecciona el nombre de la macro ->Corrige_Nombre_de_Archivos_dBase<- y 'ejecutala'
7) ahora ya podras utilizar en excel el nombre [NO... Base de datos sino... Base_de_datos] ;)
#4 Luis Verme
01/07/2005 - 03:11 | Informe spam
Muchas gracias por tu respuesta Héctor.
Inserté tu rutina y ya no existió el error. El problema es que yo agrego los
datos desde Excel al archivo dbf, creo un nuevo rango llamado
"Base_de_Datos" con los datos antiguos y nuevos pero al guardarlos no los
actualiza ya que sólo actualiza los datos que están en el rango que genera
originalmente Excel (Base de Datos). Estoy seguro que si pudiera llamar el
nuevo rango "Base de Datos", si lo guardaría completo.

Alguna idea.

Saludos

Luis Verme
PD ¿Cúal es el uso de Application.Dialogs(xlDialogDefineName).Show
en tu rutina? Yo la tuve que quitar para que funcione bien.


"Héctor Miguel" escribió en el mensaje
news:
Mostrar la cita
#5 Héctor Miguel
01/07/2005 - 10:15 | Informe spam
hola, Luis !

Mostrar la cita
1) [me temo que] la 'nueva situacion a la inversa'... [pasar de excel al archivo dbf]... 'nos deja... [justo] como al principio' :))
a) los nombres con espacios [auto-generados]... no son 'manipluables' en excel [al menos... de manera 'transparente'] :(
b) [resultan ser] un requisito 'indispensable'... para la actualizacion del archivo dbf de 'nuevos/modificados' datos-excel -?-
2) la [unica] solucion [que le veo] de momento... es 'conservar' el nombre original [con espacios] y...
a) aunque no es 'manipulable' desde excel [si estas dispuesto a no poder seleccionarlo 'directamente por su nombre']...
b) SI puedes modificar sus 'dimensiones' [insertar/eliminar filas/columnas]... 'desde el centro... hacia afuera' -?-
[es decir]... las filas/columnas que insertes/elimines ->en/desde la parte central<- del rango... 'permitiran' que...
el rango [que seguira teniendo el mismo nombre] sera 'ajustado' a sus nuevas dimensiones [con lo cual]...
podras agregar/eliminar/modificar/... los datos anteriores a/con los datos nuevos y... 'regresarlos al archivo dbf ;)
[probablemente] podras -tambien- 'encimarle' un nombre [nuevo] 'Base_de_datos' para 'trabajar/seleccionar' desde excel ;)

si cualquier duda... comentas?
saludos,
hector.
Ads by Google
Search Busqueda sugerida